#coding:utf-8
import logging
from rest_framework import viewsets

from MSB_ERP.utils.base_views import MultipleDestroyMixin
from basic_info.models import Nation, province, City

from basic_info.serializer.areat_Serializer import NationSerializer, provinceSerializer, CitySerializer


logger = logging.getLogger('my')


class NationView(viewsets.ModelViewSet, MultipleDestroyMixin):
    """
    create:
    国家--新增

    国家新增, status: 201(成功), return: 新增国家信息

    destroy:
    国家--删除

    国家删除, status: 204(成功), return: None

    multiple_delete:
    国家--批量删除,必传参数：ids=[1,2,3,4...]

    国家批量删除, status: 204(成功), return: None

    update:
    国家--修改,只是修改国家名字。

    国家修改, status: 200(成功), return: 修改后的国家信息

    partial_update:
    国家--局部修改,只是修改国家名字。

    国家局部修改, status: 200(成功), return: 修改后的国家信息

    list:
    国家--获取列表

    国家列表信息, status: 200(成功), return: 国家信息列表

    retrieve:
    查询某一个国家

    查询指定ID的国家, status: 200(成功), return: 用户国家
    """

    queryset = Nation.objects.all()
    serializer_class = NationSerializer
    
    
class provinceView(viewsets.ModelViewSet, MultipleDestroyMixin):
    """
    create:
    省份--新增

    省份新增, status: 201(成功), return: 新增省份信息

    destroy:
    省份--删除

    省份删除, status: 204(成功), return: None

    multiple_delete:
    省份--批量删除,必传参数：ids=[1,2,3,4...]

    省份批量删除, status: 204(成功), return: None

    update:
    省份--修改,只是修改省份名字。

    省份修改, status: 200(成功), return: 修改后的省份信息

    partial_update:
    省份--局部修改,只是修改省份名字。

    省份局部修改, status: 200(成功), return: 修改后的省份信息

    list:
    省份--获取列表,请求参数nid(国家id),没有参数，表示所有的省份列表，nid=x表示重写该国家的省份

    省份列表信息, status: 200(成功), return: 省份信息列表

    retrieve:
    查询某一个省份

    查询指定ID的省份, status: 200(成功), return: 用户城市
    """

    queryset = province.objects.all()
    serializer_class = provinceSerializer
    
    def get_queryset(self):
        #没有参数，表示所有的城市列表，nid=x表示重写该国家的城市
        nid=self.request.query_params.get('nid',None)
        if nid:
            nid=int(nid)
            return province.objects.filter(nation__id=nid).all()
        else:
            return province.objects.all()


class CitiesView(viewsets.ModelViewSet, MultipleDestroyMixin):
    """
    create:
    城市--新增

    城市新增, status: 201(成功), return: 新增城市信息

    destroy:
    城市--删除

    城市删除, status: 204(成功), return: None

    multiple_delete:
    城市--批量删除,必传参数：ids=[1,2,3,4...]

    城市批量删除, status: 204(成功), return: None

    update:
    城市--修改,只是修改城市名字。

    城市修改, status: 200(成功), return: 修改后的城市信息

    partial_update:
    城市--局部修改,只是修改城市名字。

    城市局部修改, status: 200(成功), return: 修改后的城市信息

    list:
    城市--获取列表,请求参数pid(省份id),没有参数，表示所有的城市列表，pid=x表示重写该省份的城市

    城市列表信息, status: 200(成功), return: 城市信息列表

    retrieve:
    查询某一个城市

    查询指定ID的城市, status: 200(成功), return: 用户城市
    """

    queryset = City.objects.all()
    serializer_class = CitySerializer

    def get_queryset(self):
        # 没有参数，表示所有的城市列表，pid=x表示重写该省份的城市
        pid = self.request.query_params.get('pid', None)
        if pid:
            nid = int(pid)
            return City.objects.filter(province__id=pid).all()
        else:
            return City.objects.all()